package reflect;

import java.io.File;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/**
 * 自动调用与当前类ReflectDemo8所在同一个包中，自动调用本类自己定义的无参方法。
 */
public class ReflectDemo8 {
    public static void main(String[] args) throws Exception{
        File file = new File(ReflectDemo8.class.getResource(".").toURI());
        File[] files = file.listFiles(f->f.getName().endsWith(".class"));
        Class cls = null;
        String packageName = ReflectDemo8.class.getPackage().getName();
        String path = file.getAbsolutePath();
        System.out.println(path);
        for (File file1 : files) {
            String className = file1.getName();
            System.out.println(className);
             String className1 = className.substring(0,className.indexOf("."));
            System.out.println(className1);
             cls = Class.forName(packageName+"."+className1);
            Object o = cls.newInstance();
            Method[] d = cls.getDeclaredMethods();
            for (Method method : d) {
                if(method.getParameterCount()==0&&method.getModifiers()== Modifier.PUBLIC){
                    method.invoke(o);
                }
            }
        }


    }
}
